// src/store/index.js
import { createStore } from 'vuex'

// 定义全局状态
const store = createStore({
  // 开启严格模式，在生产环境中是不开的，在开发环境中是开启的
  strict: process.env.NODE_ENV !== 'production',
  state () {
    return {
      // 全局状态数据
      count: 100
    }
  },
  // 放的是唯一修改状态数据的方法
  mutations: {
    // 这里修改数据只能 做同步操作不能异步
    add (state) {
      // setTimeout(() => {
      state.count++
      // }, 1000)
    },
    addNum (state, value) {
      state.count += value
    }
  },
  actions: {
    // 异步操作的地方，异步完了之后还是调用 mutations 的方法进行修改数据
    addActions (context) {

      setTimeout(() => {
        // 在异步中也需要调用同步修改
        context.commit('add')
      }, 1000)
    },
    addNumActions (context, value) {
      const { commit } = context

      // 携带参数
      commit('addNum', value)
    }
  },
  getters: {
    // 是 vuex 中的计算属性
  },
  modules: {
    // 状态模块
    // 关于用户的数据可以写一个用户的状态模块
    // 有关于项目配置的，可以写一个配置的状态模板
  }
})

// 导出全局状态
export default store
